From: Florian Müllner Date: Tue, 13 Jun 2017 01:41:42 +0000 (+0200) Subject: dash: Fix some JS warnings X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~270 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=2a01606c59894b366ff9fbbeb7cadda2d5c70dc8;p=gnome-shell.git dash: Fix some JS warnings We currently use "array[index]" to test whether an array has an element at index before using it. However nowadays gjs warns about accessing non-existent array elements, so the test itself already produces a warning. Avoid this by checking the array length before using an index to access an element. https://bugzilla.gnome.org/show_bug.cgi?id=781471 --- diff --git a/js/ui/dash.js b/js/ui/dash.js index 802ae5390..2252a74d8 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -756,42 +756,44 @@ const Dash = new Lang.Class({ let newIndex = 0; let oldIndex = 0; while (newIndex < newApps.length || oldIndex < oldApps.length) { + let oldApp = oldApps.length > oldIndex ? oldApps[oldIndex] : null; + let newApp = newApps.length > newIndex ? newApps[newIndex] : null; + // No change at oldIndex/newIndex - if (oldApps[oldIndex] == newApps[newIndex]) { + if (oldApp == newApp) { oldIndex++; newIndex++; continue; } // App removed at oldIndex - if (oldApps[oldIndex] && - newApps.indexOf(oldApps[oldIndex]) == -1) { + if (oldApp && newApps.indexOf(oldApp) == -1) { removedActors.push(children[oldIndex]); oldIndex++; continue; } // App added at newIndex - if (newApps[newIndex] && - oldApps.indexOf(newApps[newIndex]) == -1) { - addedItems.push({ app: newApps[newIndex], - item: this._createAppItem(newApps[newIndex]), + if (newApp && oldApps.indexOf(newApp) == -1) { + addedItems.push({ app: newApp, + item: this._createAppItem(newApp), pos: newIndex }); newIndex++; continue; } // App moved - let insertHere = newApps[newIndex + 1] && - newApps[newIndex + 1] == oldApps[oldIndex]; + let nextApp = newApps.length > newIndex + 1 ? newApps[newIndex + 1] + : null; + let insertHere = nextApp && nextApp == oldApp; let alreadyRemoved = removedActors.reduce(function(result, actor) { let removedApp = actor.child._delegate.app; - return result || removedApp == newApps[newIndex]; + return result || removedApp == newApp; }, false); if (insertHere || alreadyRemoved) { - let newItem = this._createAppItem(newApps[newIndex]); - addedItems.push({ app: newApps[newIndex], + let newItem = this._createAppItem(newApp); + addedItems.push({ app: newApp, item: newItem, pos: newIndex + removedActors.length }); newIndex++;